﻿using Microsoft.Xna.Framework;

namespace SpaceshipDuel
{
    /// <summary>
    /// Kamera-Klasse
    /// </summary>
    class Camera
    {
        public Matrix transform;    // Transformationsmatrix
        Vector2 centre;             // Zentrum

        public Camera()
        {
        }

        // Update-Routine für die Kamera
        public void Update(Vector2 position, int viewportWidth, int viewportHeight, float rotArc)
        {
            centre = new Vector2(position.X - viewportWidth / 2, position.Y - viewportHeight / 2);

            // "Klassische Kamera" - Folgt dem Sprite nur per Verschiebung
            //transform = Matrix.CreateScale(new Vector3(1, 1, 0)) * Matrix.CreateTranslation(new Vector3(-centre.X, -centre.Y, 0));

            // Kamera folgt dem Sprite per Verschiebung und Rotation, dadurch bleibt das Sprite 
            // in der Bildschirmmitte fixiert und die Welt drumherum wird rotiert und verschoben
            transform = Matrix.CreateScale(new Vector3(1, 1, 0)) * Matrix.CreateTranslation(new Vector3(-position.X, -position.Y, 0)) * Matrix.CreateRotationZ(-rotArc) * Matrix.CreateTranslation(new Vector3(position.X, position.Y, 0)) * Matrix.CreateTranslation(new Vector3(-centre.X, -centre.Y, 0));
        }
    }
}
